package com.wk.code.wkserver.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wk.code.wkserver.entity.AdminVerifyRecord;
import com.wk.code.wkserver.entity.UserWithdraw;
import com.wk.code.wkserver.request.admin.AdminUserWithdrawRequest;
import com.wk.code.wkserver.request.admin.WithdrawVerifyRequest;
import com.wk.code.wkserver.request.app.UserWithdrawRequest;
import com.wk.code.wkserver.request.base.BasePageRequest;
import com.wk.code.wkserver.response.admin.UserWithdrawResponse;
import com.wk.code.wkserver.response.app.BalanceDetailResponse;
import com.wk.code.wkserver.response.app.EstimateDetailResponse;
import com.wk.code.wkserver.response.base.PageInfo;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author wq
 * @since 2021-08-15
 */
public interface IUserWithdrawService extends IService<UserWithdraw> {

    /**
     * 用户体现
     *
     * @param request 请求参数
     */
    void withdraw(Integer userId, UserWithdrawRequest request);

    /**
     * 我的余额明细
     *
     * @param request 请求参数
     * @return BalanceDetailResponse
     */
    BalanceDetailResponse balanceDetail(Integer userId, BasePageRequest request);

    /**
     * 预计入账金额
     *
     * @param userId  用户ID
     * @param request 请求参数
     * @return EstimateDetailResponse
     */
    EstimateDetailResponse estimateDetail(Integer userId, BasePageRequest request);

    /**
     * 后台提现列表
     *
     * @param request 请求参数
     * @return PageInfo<UserWithdrawResponse>
     */
    PageInfo<UserWithdrawResponse> pageList(AdminUserWithdrawRequest request);

    /**
     * 提现审核
     *
     * @param sysUserId 系统用户ID
     * @param request   请求参数
     */
    void verify(Integer sysUserId, WithdrawVerifyRequest request);


    /**
     * 提现详情
     *
     * @param id 用户ID
     * @return UserWithdrawResponse
     */
    UserWithdrawResponse detail(Integer id);
}
